package es.itpyme.websip.domain;

import java.io.Serializable;

import javax.persistence.*;

import java.math.BigDecimal;
import java.util.Date;
import java.util.Set;


/**
 * The persistent class for the VERSION database table.
 * 
 */
@Entity
public class Version extends Base implements Serializable,IBaseDAO {
	private static final long serialVersionUID = 1L;

	public static final String ATTR_NOMBRE="nombre";
	public static final String ATTR_ID="id";
	
	@Id
	@SequenceGenerator(name="VERSION_ID_GENERATOR", sequenceName="VERSIONID")
	@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="VERSION_ID_GENERATOR")
	@Column(updatable=false)
	private Integer id;

	private BigDecimal coste;

	@Column(name="COSTE_DEFINICION")
	private BigDecimal costeDefinicion;

	private String dependencia;

	@Column(name="DESCRIPCION")
	private String descripcion;
  
	@Column(name="ESTIMACION")
	private Integer estimacion;

    @Temporal( TemporalType.DATE)
	@Column(name="FECHA_INICIO")
	private Date fechaInicio;

    @Temporal( TemporalType.DATE)
	@Column(name="FECHA_PRIMERA_ENTREGA")
	private Date fechaPrimeraEntrega;

    @Temporal( TemporalType.DATE)
	@Column(name="FECHA_PRODUCCION")
	private Date fechaProduccion;

    @Temporal( TemporalType.DATE)
	@Column(name="FECHA_ULTIMA_ENTREGA")
	private Date fechaUltimaEntrega;

    @Temporal( TemporalType.DATE)
	@Column(name="FECHA_ULTIMO_AVANCE")
	private Date fechaUltimoAvance;

    @Column(name="CENTRO_COSTE_DESA")
    private String centroCosteDesa;
    
    @Column(name="CENTRO_COSTE_DEFINICION")
    private String centroCosteDf;
   
    
	private String inicio;

	private String nombre;

	@Column(name="ULT_AVANCE_EXTERNO")
	private String ultAvanceExterno;
	
	@Column(name="ULT_AVANCE_RV")
	private String ultAvanceRV;
	
	@Column(name="IMPACTO")
	private String impacto;
	
	@Column(name="ULT_AVANCE_INTERNO")
	private String ultAvanceInterno;
	
	@Temporal( TemporalType.DATE)
	@Column(name="FE_ENTREGA_PRUEBAS")
	private Date feEntregaPruebas;
	
	@Column(name="PETICION_ISLA")
	private String peticionIsla;

	@Column(name="PETICION_PRE_ISLA")
	private String peticionPreIsla;

	@Column(name="PTE_ENTREGAR")
	private String pteEntregar;

	@Column(name="OBS_PTE_ENTREGAR")
	private String obsPteEntregar;
	
	private String riesgos;

	@Column(name="USU_CREACION", updatable=false)
	private Integer usuCreacion;  
	
	@Column(name="USU_MODIFICACION")
	private Integer usuModificacion;
	
	@Temporal( TemporalType.DATE)
	@Column(name="FE_CREACION", updatable=false)
	private Date feCreacion;
	
	@Temporal( TemporalType.DATE)
	@Column(name="FE_MODIFICACION")
	private Date feModificacion;
	
	//bi-directional many-to-one association to Avance
	@OneToMany(mappedBy="version")
	private Set<Avance> avances;

	//bi-directional many-to-one association to EstadoVersion
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="ESTADO")
	private EstadoVersion estadoVersion;
	
	//bi-directional many-to-one association to Avance
	@OneToMany(mappedBy="version")
	private Set<UsuariosVersion> usuariosVersion;

	

	//bi-directional many-to-one association to Proyecto
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="PROYECTO")
	private Proyecto proyecto;



    public Version() {
    }

	public Integer getId() {
		return this.id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public BigDecimal getCoste() {
		return this.coste;
	}

	public void setCoste(BigDecimal coste) {
		this.coste = coste;
	}

	public BigDecimal getCosteDefinicion() {
		return this.costeDefinicion;
	}

	public void setCosteDefinicion(BigDecimal costeDefinicion) {
		this.costeDefinicion = costeDefinicion;
	}

	public String getDependencia() {
		return this.dependencia;
	}

	public void setDependencia(String dependencia) {
		this.dependencia = dependencia;
	}

	public String getDescripcion() {
		return this.descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	

	
	public Date getFechaInicio() {
		return this.fechaInicio;
	}

	public void setFechaInicio(Date fechaInicio) {
		this.fechaInicio = fechaInicio;
	}

	public Date getFechaPrimeraEntrega() {
		return this.fechaPrimeraEntrega;
	}

	public void setFechaPrimeraEntrega(Date fechaPrimeraEntrega) {
		this.fechaPrimeraEntrega = fechaPrimeraEntrega;
	}

	public Date getFechaProduccion() {
		return this.fechaProduccion;
	}

	public void setFechaProduccion(Date fechaProduccion) {
		this.fechaProduccion = fechaProduccion;
	}

	public Date getFechaUltimaEntrega() {
		return this.fechaUltimaEntrega;
	}

	public void setFechaUltimaEntrega(Date fechaUltimaEntrega) {
		this.fechaUltimaEntrega = fechaUltimaEntrega;
	}

	public Date getFechaUltimoAvance() {
		return this.fechaUltimoAvance;
	}

	public void setFechaUltimoAvance(Date fechaUltimoAvance) {
		this.fechaUltimoAvance = fechaUltimoAvance;
	}

	public String getInicio() {
		return this.inicio;
	}

	public void setInicio(String inicio) {
		this.inicio = inicio;
	}

	public String getNombre() {
		return this.nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getPeticionIsla() {
		return this.peticionIsla;
	}

	public void setPeticionIsla(String peticionIsla) {
		this.peticionIsla = peticionIsla;
	}

	public String getPeticionPreIsla() {
		return this.peticionPreIsla;
	}

	public void setPeticionPreIsla(String peticionPreIsla) {
		this.peticionPreIsla = peticionPreIsla;
	}

	public String getPteEntregar() {
		return this.pteEntregar;
	}

	public void setPteEntregar(String pteEntregar) {
		this.pteEntregar = pteEntregar;
	}

	public String getRiesgos() {
		return this.riesgos;
	}

	public void setRiesgos(String riesgos) {
		this.riesgos = riesgos;
	}



	public Set<Avance> getAvances() {
		return this.avances;
	}

	public void setAvances(Set<Avance> avances) {
		this.avances = avances;
	}
	
	

	public EstadoVersion getEstadoVersion() {
		return this.estadoVersion;
	}

	public void setEstadoVersion(EstadoVersion estadoVersion) {
		this.estadoVersion = estadoVersion;
	}
	
	
	
	public Proyecto getProyecto() {
		return this.proyecto;
	}

	public void setProyecto(Proyecto proyecto) {
		this.proyecto = proyecto;
	}
	

	
	 public Version(Integer _id,String _codigo,String _descripcion,String _estado,Integer _JP,Integer _idVersion,String nombre) {
	    proyecto=new Proyecto(_id, _codigo, _descripcion, _estado, _JP);
	    this.id=_idVersion;
	    this.nombre=nombre;
	    }
	 
	 /**
	  * nombre corto de la version
	  * @return
	  */
	 public String getAbrvNombre(){
		 String abrv=null;
		 Proyecto p=getProyecto();
		 if (p!=null){
			 abrv=p.getAbrv();
			 
		 }
		 return new StringBuffer(abrv==null?"":abrv).append(" ").append(getNombre()).toString();
	 }

	public Integer getEstimacion() {
		return estimacion;
	}

	public void setEstimacion(Integer estimacion) {
		this.estimacion = estimacion;
	}

	public Date getFeEntregaPruebas() {
		return feEntregaPruebas;
	}

	public void setFeEntregaPruebas(Date feEntregaPruebas) {
		this.feEntregaPruebas = feEntregaPruebas;
	}

	public String getUltAvanceExterno() {
		return ultAvanceExterno;
	}

	public void setUltAvanceExterno(String ultAvanceExterno) {
		this.ultAvanceExterno = ultAvanceExterno;
	}

	public String getUltAvanceRV() {
		return ultAvanceRV;
	}

	public void setUltAvanceRV(String ultAvanceRV) {
		this.ultAvanceRV = ultAvanceRV;
	}

	public String getUltAvanceInterno() {
		return ultAvanceInterno;
	}

	public void setUltAvanceInterno(String ultAvanceInterno) {
		this.ultAvanceInterno = ultAvanceInterno;
	}

	public String getCentroCosteDesa() {
		return centroCosteDesa;
	}

	public void setCentroCosteDesa(String centroCosteDesa) {
		this.centroCosteDesa = centroCosteDesa;
	}

	

	public String getObsPteEntregar() {
		return obsPteEntregar;
	}

	public void setObsPteEntregar(String obsPteEntregar) {
		this.obsPteEntregar = obsPteEntregar;
	}

	public String getImpacto() {
		return impacto;
	}

	public void setImpacto(String impacto) {
		this.impacto = impacto;
	}

	public Integer getUsuCreacion() {
		return usuCreacion;
	}

	public void setUsuCreacion(Integer usuCreacion) {
		this.usuCreacion = usuCreacion;
	}

	public Integer getUsuModificacion() {
		return usuModificacion;
	}

	public void setUsuModificacion(Integer usuModificacion) {
		this.usuModificacion = usuModificacion;
	}

	public Date getFeCreacion() {
		return feCreacion;
	}

	public void setFeCreacion(Date feCreacion) {
		this.feCreacion = feCreacion;
	}

	public Date getFeModificacion() {
		return feModificacion;
	}

	public void setFeModificacion(Date feModificacion) {
		this.feModificacion = feModificacion;
	}

	
	public String getEstado() {
		
		if (estadoVersion!=null){
			return this.estadoVersion.getCodigo();
		}else{
			return null;
		}
	}

	
	public void setEstado(String estado) {
		
		if (estadoVersion==null){
			this.estadoVersion=new EstadoVersion();
		}
		this.estadoVersion.setCodigo(estado);
		
		
	}

	public String getCentroCosteDf() {
		return centroCosteDf;
	}

	public void setCentroCosteDf(String centroCosteDf) {
		this.centroCosteDf = centroCosteDf;
	}

	public Set<UsuariosVersion> getUsuariosVersion() {
		return usuariosVersion;
	}

	public void setUsuariosVersion(Set<UsuariosVersion> usuariosVersion) {
		this.usuariosVersion = usuariosVersion;
	}


	
	
	
}